home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 19 / CU Amiga Magazine's Super CD-ROM 19 (1998)(EMAP Images)(GB)[!][issue 1998-02].iso / CUCD / Online / RFCs / rfc / rfc2210.txt < prev    next >
Text File  |  1997-10-08  |  78KB  |  1,852 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7. Network Working Group                                      J. Wroclawski
  8. Request for Comments: 2210                                       MIT LCS
  9. Category: Standards Track                                 September 1997
  10.  
  11.  
  12.  
  13.              The Use of RSVP with IETF Integrated Services
  14.  
  15.  
  16. Status of this Memo
  17.  
  18.    This document specifies an Internet standards track protocol for the
  19.    Internet community, and requests discussion and suggestions for
  20.    improvements.  Please refer to the current edition of the "Internet
  21.    Official Protocol Standards" (STD 1) for the standardization state
  22.    and status of this protocol.  Distribution of this memo is unlimited.
  23.  
  24. Abstract
  25.  
  26.    This note describes the use of the RSVP resource reservation protocol
  27.    with the Controlled-Load and Guaranteed QoS control services.  The
  28.    RSVP protocol defines several data objects which carry resource
  29.    reservation information but are opaque to RSVP itself.  The usage and
  30.    data format of those objects is given here.
  31.  
  32. 1. Introduction
  33.  
  34.    The Internet integrated services framework provides the ability for
  35.    applications to choose among multiple, controlled levels of delivery
  36.    service for their data packets. To support this capability, two
  37.    things are required:
  38.  
  39.       - Individual network elements (subnets and IP routers) along the
  40.       path followed by an application's data packets must support
  41.       mechanisms to control the quality of service delivered to those
  42.       packets.
  43.  
  44.       - A way to communicate the application's requirements to network
  45.       elements along the path and to convey QoS management information
  46.       between network elements and the application must be provided.
  47.  
  48.    In the integrated services framework the first function is provided
  49.    by QoS control services such as Controlled-Load [RFC 2211] and
  50.    Guaranteed [RFC 2212].  The second function may be provided in a
  51.    number of ways, but is frequently implemented by a resource
  52.    reservation setup protocol such as RSVP [RFC 2205].
  53.  
  54.  
  55.  
  56.  
  57.  
  58. Wroclawski                  Standards Track                     [Page 1]
  59.  
  60. RFC 2210                   RSVP with INTSERV              September 1997
  61.  
  62.  
  63.    Because RSVP is designed to be used with a variety of QoS control
  64.    services, and because the QoS control services are designed to be
  65.    used with a variety of setup mechanisms, a logical separation exists
  66.    between the two specifications. The RSVP specification does not
  67.    define the internal format of those RSVP protocol fields, or objects,
  68.    which are related to invoking QoS control services. Rather, RSVP
  69.    treats these objects as opaque.  The objects can carry different
  70.    information to meet different application and QoS control service
  71.    requirements.
  72.  
  73.    Similarly, interfaces to the QoS control services are defined in a
  74.    general format, so that the services can be used with a variety of
  75.    setup mechanisms.
  76.  
  77.    This RFC provides the information required to use RSVP and the
  78.    integrated service framework's QoS control services together. It
  79.    defines the usage and contents of three RSVP protocol objects, the
  80.    FLOWSPEC, ADSPEC, and SENDER_TSPEC, in an environment supporting the
  81.    Controlled-Load and/or Guaranteed QoS control services. If new
  82.    services or capabilities are added to the integrated services
  83.    framework, this note will be revised as required.
  84.  
  85. 2. Use of RSVP
  86.  
  87.    Several types of data must be transported between applications and
  88.    network elements to correctly invoke QoS control services.
  89.  
  90.       NOTE: In addition to the data used to directly invoke QoS control
  91.       services, RSVP carries authentication, accounting, and policy
  92.       information needed to manage the use of these services. This note
  93.       is concerned only with the RSVP objects needed to actually invoke
  94.       QoS control services, and does not discuss accounting or policy
  95.       objects.
  96.  
  97.    This data includes:
  98.  
  99.       - Information generated by each receiver describing the QoS
  100.       control service desired, a description of the traffic flow to
  101.       which the resource reservation should apply (the Receiver TSpec),
  102.       and whatever parameters are required to invoke the service (the
  103.       Receiver RSpec). This information is carried from the receivers to
  104.       intermediate network elements and the sender(s) by RSVP FLOWSPEC
  105.       objects. The information being carried in a FLOWSPEC object may
  106.       change at intermediate points in the network due to reservation
  107.       merging and other factors.
  108.  
  109.  
  110.  
  111.  
  112.  
  113.  
  114. Wroclawski                  Standards Track                     [Page 2]
  115.  
  116. RFC 2210                   RSVP with INTSERV              September 1997
  117.  
  118.  
  119.       - Information generated at each sender describing the data traffic
  120.       generated by that sender (the Sender TSpec). This information is
  121.       carried from the sender to intermediate network elements and the
  122.       receiver(s) by RSVP, but is never modified by intermediate
  123.       elements within the network. This information is carried in RSVP
  124.       SENDER_TSPEC objects.
  125.  
  126.       - Information generated or modified within the network and used at
  127.       the receivers to make reservation decisions.  This information
  128.       might include available services, delay and bandwidth estimates,
  129.       and operating parameters used by specific QoS control services.
  130.       this information is collected from network elements and carried
  131.       towards receivers in RSVP ADSPEC objects.  Rather than carrying
  132.       information from each intermediate node separately to the
  133.       receivers, the information in the ADSPEC represents a summary,
  134.       computed as the ADSPEC passes each hop.  The size of this summary
  135.       remains (roughly) constant as the ADSPEC flows through the
  136.       network, giving good scaling properties.
  137.  
  138.    From the point of view of RSVP objects, the breakdown is as follows:
  139.  
  140.       - The RSVP SENDER_TSPEC object carries the traffic specification
  141.       (sender TSpec) generated by each data source within an RSVP
  142.       session.  It is transported unchanged through the network, and
  143.       delivered to both intermediate nodes and receiving applications.
  144.  
  145.       - The RSVP ADSPEC object carries information which is generated at
  146.       either data sources or intermediate network elements, is flowing
  147.       downstream towards receivers, and may be used and updated inside
  148.       the network before being delivered to receiving applications.
  149.       This information includes both parameters describing the
  150.       properties of the data path, including the availability of
  151.       specific QoS control services, and parameters required by specific
  152.       QoS control services to operate correctly.
  153.  
  154.       - The RSVP FLOWSPEC object carries reservation request
  155.       (Receiver_TSpec and RSpec) information generated by data
  156.       receivers.  The information in the FLOWSPEC flows upstream towards
  157.       data sources.  It may be used or updated at intermediate network
  158.       elements before arriving at the sending application.
  159.  
  160.         NOTE: The existence of both SENDER_TSPEC and ADSPEC RSVP objects
  161.         is somewhat historical. Using the message format described in
  162.         this note it would be possible to place all of the service
  163.         control information carried "downstream" by RSVP in the same
  164.         object. However, the distinction between data which is not
  165.         updated within the network (in the SENDER_TSPEC object) and data
  166.         which is updated within the network (in the ADSPEC object) may
  167.  
  168.  
  169.  
  170. Wroclawski                  Standards Track                     [Page 3]
  171.  
  172. RFC 2210                   RSVP with INTSERV              September 1997
  173.  
  174.  
  175.         be useful to an implementation in practice, and is therefore
  176.         retained.
  177.  
  178. 2.1 Summary of operation
  179.  
  180.    Operation proceeds as follows:
  181.  
  182.    An application instance participating in an RSVP session as a data
  183.    sender registers with RSVP. One piece of information provided by the
  184.    application instance is the Sender TSpec describing the traffic the
  185.    application expects to generate.  This information is used to
  186.    construct an RSVP SENDER_TSPEC object, which is included in RSVP PATH
  187.    messages generated for the application.
  188.  
  189.    The sending application also constructs an initial RSVP ADSPEC
  190.    object.  This adspec carries information about the QoS control
  191.    capabilities and requirements of the sending application itself, and
  192.    forms the starting point for the accumulation of path properties
  193.    described below. The ADSPEC is added to the RSVP PATH message created
  194.    at the sender.
  195.  
  196.       NOTE: For the convenience of application programmers, a host RSVP
  197.       implementation may allow the sending application not to provide an
  198.       initial adspec, instead supplying its own default.  This usage is
  199.       most likely when the application sender does not itself
  200.       participate in the end-to-end QoS control process (by actively
  201.       scheduling CPU usage and similar means) and does not itself care
  202.       which QoS control service is selected by the receivers.
  203.  
  204.       Typically the default ADSPEC supplied by the host RSVP in this
  205.       case would support all QoS control services known to the host.
  206.       However, the exact behavior of this mechanism is implementation
  207.       dependent.
  208.  
  209.    The ADSPEC is modified by subsequent network elements as the RSVP
  210.    PATH message moves from sender to receiver(s).  At each network
  211.    element, the ADSPEC is passed from RSVP to the traffic control
  212.    module.  The traffic control module updates the ADSPEC, which may
  213.    contain data for several QoS control services, by identifying the
  214.    services mentioned in the ADSPEC and calling each such service to
  215.    update its portion of the ADSPEC. If the traffic control module
  216.    discovers a QoS control service mentioned in the ADSPEC but not
  217.    implemented by the network element, a flag is set to report this to
  218.    the receiver.  The updated ADSPEC is then returned to RSVP for
  219.    delivery to the next hop along the path.
  220.  
  221.  
  222.  
  223.  
  224.  
  225.  
  226. Wroclawski                  Standards Track                     [Page 4]
  227.  
  228. RFC 2210                   RSVP with INTSERV              September 1997
  229.  
  230.  
  231.    Upon arrival of the PATH message at an application receiver, the data
  232.    in the SENDER_TSPEC and ADSPEC objects is passed across the RSVP API
  233.    to the application.  The application (perhaps with the help of a
  234.    library of common resource-reservation functions) interprets the
  235.    arriving data, and uses it to guide the selection of resource
  236.    reservation parameters.  Examples of this include use of the arriving
  237.    "PATH_MTU" composed characterization parameter [RFC 2215] to
  238.    determine the maximum packet size parameter in the reservation
  239.    request and use of the arriving Guaranteed service "C" and "D"
  240.    parameters [RFC 2212] to calculate a mathematical bound on delivered
  241.    packet delay when using the Guaranteed service.
  242.  
  243.    An application receiver wishing to make a resource reservation
  244.    supplies its local RSVP with the necessary reservation parameters.
  245.    Among these are the QoS control service desired (Guaranteed or
  246.    Controlled-Load), the traffic specifier (TSpec) describing the level
  247.    of traffic for which resources should be reserved, and, if needed by
  248.    the selected QoS control service, an RSpec describing the level of
  249.    service desired.  These parameters are composed into an RSVP FLOWSPEC
  250.    object and transmitted upstream by RSVP.
  251.  
  252.    At each RSVP-aware point in the network, the SENDER_TSPECs arriving
  253.    in PATH messages and the FLOWSPECs arriving in RESV messages are used
  254.    to request an appropriate resource reservation from the desired QoS
  255.    control service.  State merging, message forwarding, and error
  256.    handling proceed according to the rules of the RSVP protocol.
  257.  
  258.    Finally, the merged FLOWSPEC object arriving at each of an RSVP
  259.    session's data senders is delivered to the application to inform each
  260.    sender of the merged reservation request and properties of the data
  261.    path.
  262.  
  263. 2.2. RSVP support for multiple QoS control services
  264.  
  265.    The design described in this note supports RSVP sessions in which the
  266.    receivers choose a QoS control service at runtime.
  267.  
  268.    To make this possible, a receiver must have all the information
  269.    needed to choose a particular service before it makes the choice.
  270.    This means that the RSVP SENDER_TSPEC and ADSPEC objects must provide
  271.    the receivers with information for all services which might be
  272.    chosen.
  273.  
  274.    The Sender TSpec used by the two currently defined QoS control
  275.    services is identical.  This simplifies the RSVP SENDER_TSPEC object,
  276.    which need carry only a single TSpec data structure in this shared
  277.    format.  This common SENDER_TSPEC can be used with either Guaranteed
  278.    or Controlled-Load service.
  279.  
  280.  
  281.  
  282. Wroclawski                  Standards Track                     [Page 5]
  283.  
  284. RFC 2210                   RSVP with INTSERV              September 1997
  285.  
  286.  
  287.    The RSVP ADSPEC carries information needed by receivers to choose a
  288.    service and determine the reservation parameters. This includes:
  289.  
  290.       - Whether or not there is a non-RSVP hop along the path. If there
  291.       is a non-RSVP hop, the application's traffic will receive
  292.       reservationless best-effort service at at least one point on the
  293.       path.
  294.  
  295.       - Whether or not a specific QoS control service is implemented at
  296.       every hop along the path. For example, a receiver might learn that
  297.       at least one integrated-services aware hop along the path supports
  298.       the Controlled-Load service but not the Guaranteed service.
  299.  
  300.       - Default or global values for the general characterization
  301.       parameters described in [RFC 2215]. These values describe
  302.       properties of the path itself, irrespective of the selected QoS
  303.       control service. A value reported in this section of the ADSPEC
  304.       applies to all services unless a different, service-specific value
  305.       is also present in the ADSPEC.
  306.  
  307.       - A service-specific value for one or more general
  308.       characterization parameters, if the service-specific value differs
  309.       from the default value.
  310.  
  311.       - Values of the per-service characterization parameters defined by
  312.       each supported service.
  313.  
  314.    Data in the ADSPEC is divided into blocks or fragments, each of which
  315.    is associated with a specific service.  This allows the adspec to
  316.    carry information about multiple services, allows new services to be
  317.    deployed in the future without immediately updating existing code,
  318.    and allows an application which will never use a particular service
  319.    to omit the ADSPEC data for that service.  The structure of the
  320.    ADSPEC is described in detail in Section 3.3.
  321.  
  322.    A sender may indicate that a specific QoS control service should
  323.    *not* be used by the receivers within an RSVP session.  This is done
  324.    by omitting all mention of that service from the ADSPEC, as described
  325.    in Section 3.3.  Upon arrival at a receiver, the complete absence of
  326.    an ADSPEC fragment for a specific service indicates to receivers that
  327.    the service should not be used.
  328.  
  329.       NOTE: In RSVP Version 1, all receivers within a session are
  330.       required to choose the same QoS control service.  This restriction
  331.       is imposed by the difficulty of merging reservations requesting
  332.       different QoS control services, and the current lack of a general
  333.       service replacement mechanism.  The restriction may be eliminated
  334.       in the future.
  335.  
  336.  
  337.  
  338. Wroclawski                  Standards Track                     [Page 6]
  339.  
  340. RFC 2210                   RSVP with INTSERV              September 1997
  341.  
  342.  
  343.       Considering this restriction, it may be useful to coordinate the
  344.       receivers' selection of a QoS control service by having the
  345.       sender(s) offer only one choice, using the ADSPEC mechanism
  346.       mentioned above.  All receivers must then select the same service.
  347.       Alternatively, the coordination might be accomplished by using a
  348.       higher-level session announcement and setup mechanism to inform
  349.       the receivers of the QoS control service in use, by manual
  350.       configuration of the receivers, or by an agreement protocol
  351.       running among the session receivers themselves.
  352.  
  353.       As with the ADSPEC, the FLOWSPEC and SENDER_TSPEC object formats
  354.       described in Section 3 are capable of carrying TSpecs and RSpecs
  355.       for more than one QoS control service in separate data fragments.
  356.       Currently, use of a FLOWSPEC or SENDER_TSPEC containing fragments
  357.       for more than one QoS control service is not supported.  In the
  358.       future, this capability may be used to implement a more flexible
  359.       service request and replacement scheme, allowing applications to
  360.       obtain useful end-to-end QoS control when not all intermediate
  361.       nodes support the same set of QoS services.  RSVP-application APIs
  362.       should be designed to support passing SENDER_TSPEC, FLOWSPEC, and
  363.       ADSPEC objects of variable size and containing information about
  364.       multiple QoS control services between RSVP and its clients.
  365.  
  366. 2.3. Use of ADSPEC Information
  367.  
  368.    This section gives some details about setting reservation parameters
  369.    and the use of information conveyed by the RSVP ADSPEC object.
  370.  
  371. 2.3.1. Determining the availability of a QoS control service
  372.  
  373.    The RSVP ADSPEC carries flag bits telling the application receivers
  374.    whether or not a completely reservation-capable path exists between
  375.    each sender and the receiver. These bits are called "break bits",
  376.    because they indicate breaks in the QoS control along a network path.
  377.    Break bits are carried within the header which begins each per-
  378.    service data fragment of an RSVP ADSPEC.
  379.  
  380.    Service number 1 is used within the ADSPEC to identify a fragment
  381.    carrying information about global parameter values that apply to all
  382.    services (see [RFC 2215] for more details). The break bit in service
  383.    1's per-service header is used to tell the receiver(s) whether all of
  384.    the network elements along the path from sender to receiver support
  385.    RSVP and integrated services.  If a receiver finds this bit set, at
  386.    least one network element along the data transmission path between
  387.    the ADSPEC's sender and the receiver can not provide QoS control
  388.    services at all.  This bit corresponds to the global NON_IS_HOP
  389.    characterization parameter defined in [RFC 2215].
  390.  
  391.  
  392.  
  393.  
  394. Wroclawski                  Standards Track                     [Page 7]
  395.  
  396. RFC 2210                   RSVP with INTSERV              September 1997
  397.  
  398.  
  399.       NOTE: If this bit is set, the values of all other parameters in
  400.       the ADSPEC are unreliable. The bit being set indicates that at
  401.       least one node along the sender-receiver path did not fully
  402.       process the ADSPEC.
  403.  
  404.    Service-specific break bits tell the receiver(s) whether all of the
  405.    network elements along the path from sender to receiver support a
  406.    particular QoS control service.  The break bit for each service is
  407.    carried within the ADSPEC's per-service header for that service.  If
  408.    a bit is set at the receiver, at least one network element along the
  409.    data transmission path supports RSVP but does not support the QoS
  410.    control service corresponding to the per-service header.  These bits
  411.    correspond to the service-specific NON_IS_HOP characterization
  412.    parameters defined in [RFC 2215].
  413.  
  414.    Section 3 gives more information about break bits.
  415.  
  416. 2.3.2. Determining Path MTU
  417.  
  418.    Both Guaranteed and Controlled-Load QoS control services place an
  419.    upper bound on packet size, and require that the application limit
  420.    the maximum size of packets subject to resource reservation. For both
  421.    services, the desired maximum packet size is a parameter of the
  422.    reservation request, and the service will reject (with an admission
  423.    control error) reservation requests specifying a packet size larger
  424.    than that supported by the service.
  425.  
  426.    Since RSVP reservation requests are made by receivers, this implies
  427.    that the *receivers* in an RSVP session, as well as the senders, need
  428.    to know the MTU supported by the QoS control services along a data
  429.    path.  Further, in some unusual cases the MTU supported by a QoS
  430.    control service may differ from that supported by the same router
  431.    when providing best effort service.
  432.  
  433.    A scalable form of MTU negotiation is used to address these problems.
  434.    MTU negotiation in an RSVP system works as follows:
  435.  
  436.       - Each sending application joining an RSVP session fills in the M
  437.       (maximum packet size) parameter in its generated Sender_TSpec
  438.       (carried from senders to receivers in a SENDER_TSPEC object) with
  439.       the maximum packet size it wishes to send covered by resource
  440.       reservation.
  441.  
  442.       - Each RSVP PATH message from a sending application also carries
  443.       an ADSPEC object containing at least one PATH_MTU characterization
  444.       parameter. When it arrives at the receiver, this parameter gives
  445.       the minimum MTU at any point along the path from sender to
  446.       receiver.  Generally, only the "global" PATH_MTU parameter
  447.  
  448.  
  449.  
  450. Wroclawski                  Standards Track                     [Page 8]
  451.  
  452. RFC 2210                   RSVP with INTSERV              September 1997
  453.  
  454.  
  455.       (service 1, parameter 9) will be present, in which case its value
  456.       is a legal MTU for all reservation requests. If a service specific
  457.       PATH_MTU parameter is present, its value will be smaller than that
  458.       of the global parameter, and should be used for reservation
  459.       requests for that service.
  460.  
  461.       - Each receiver takes the minimum of all the PATH_MTU values (for
  462.       the desired QoS control service) arriving in ADSPEC messages from
  463.       different senders and uses that value as the MTU in its
  464.       reservation requests.  This value is used to fill in the M
  465.       parameter of the TSpec created at the receiver.  In the case of a
  466.       FF style reservation, a receiver may also choose to use the MTU
  467.       derived from each sender's ADSPEC in the FLOWSPEC generated for
  468.       that sender, if the receiver is concerned about obtaining the
  469.       maximum MTU on each data path. To accomodate changes in the data
  470.       path, the receiver may continue to watch the arriving ADSPECS, and
  471.       modify the reservation if a newly arriving ADSPEC indicates a
  472.       smaller MTU than is currently in use.
  473.  
  474.       - As reservation requests (RESV messages) move from receivers to
  475.       senders, reservation parameters are merged at intermediate nodes.
  476.       As part of this merging, the smaller of two M parameters arriving
  477.       at a merge point will be forwarded in the upstream RESV message.
  478.  
  479.       - As reservation requests arrive at intermediate RSVPs, the
  480.       minimum of the receivers' requested TSpec and the sum of the
  481.       sender TSpecs is taken, and a reservation for the resulting TSpec
  482.       is made. The reservation will use the smaller of the actual path
  483.       MTU value computed by the receivers and the largest maximum packet
  484.       size declared by any of the sender(s). (The TSpec sum() function
  485.       result's M parameter is the max of the summed TSpec M parameters).
  486.  
  487.       - When the completely merged RESV message arrives at each sender,
  488.       the MTU value (M parameter) in the merged FLOWSPEC object will
  489.       have been set to the smallest acceptable MTU of the data paths
  490.       from that sender to any session receiver. This MTU should be used
  491.       by the sending application to size its packets. Any packets larger
  492.       than this MTU may be delivered as best-effort rather than being
  493.       covered by the session's resource reservation.
  494.  
  495.       Note that senders do *not* adjust the value of their
  496.       Sender_TSpec's M field to match the actual packet size selected in
  497.       this step. The value of M represents the largest packet the sender
  498.       could send, not the largest packet the sender is currently
  499.       sending.
  500.  
  501.  
  502.  
  503.  
  504.  
  505.  
  506. Wroclawski                  Standards Track                     [Page 9]
  507.  
  508. RFC 2210                   RSVP with INTSERV              September 1997
  509.  
  510.  
  511.    Note that the scheme above will allow each sender in a session to use
  512.    the largest MTU appropriate for that sender, in cases where different
  513.    data paths or receivers have different acceptable MTU's.
  514.  
  515. 3. RSVP Object Formats
  516.  
  517.    This section specifies the detailed contents and wire format of RSVP
  518.    SENDER_TSPEC, ADSPEC, and FLOWSPEC objects for use with the
  519.    Guaranteed and Controlled-Load QoS control services. The object
  520.    formats specified here are based on the general message construction
  521.    rules given in Appendix 1.
  522.  
  523. 3.1. RSVP SENDER_TSPEC Object
  524.  
  525.    The RSVP SENDER_TSPEC object carries information about a data
  526.    source's generated traffic. The required RSVP SENDER_TSPEC object
  527.    contains a global Token_Bucket_TSpec parameter (service_number 1,
  528.    parameter 127, as defined in [RFC 2215]). This TSpec carries traffic
  529.    information usable by either the Guaranteed or Controlled-Load QoS
  530.    control services.
  531.  
  532.  
  533.  
  534.  
  535.  
  536.  
  537.  
  538.  
  539.  
  540.  
  541.  
  542.  
  543.  
  544.  
  545.  
  546.  
  547.  
  548.  
  549.  
  550.  
  551.  
  552.  
  553.  
  554.  
  555.  
  556.  
  557.  
  558.  
  559.  
  560.  
  561.  
  562. Wroclawski                  Standards Track                    [Page 10]
  563.  
  564. RFC 2210                   RSVP with INTSERV              September 1997
  565.  
  566.  
  567.         31           24 23           16 15            8 7             0
  568.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  569.    1   | 0 (a) |    reserved           |             7 (b)             |
  570.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  571.    2   |    1  (c)     |0| reserved    |             6 (d)             |
  572.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  573.    3   |   127 (e)     |    0 (f)      |             5 (g)             |
  574.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  575.    4   |  Token Bucket Rate [r] (32-bit IEEE floating point number)    |
  576.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  577.    5   |  Token Bucket Size [b] (32-bit IEEE floating point number)    |
  578.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  579.    6   |  Peak Data Rate [p] (32-bit IEEE floating point number)       |
  580.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  581.    7   |  Minimum Policed Unit [m] (32-bit integer)                    |
  582.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  583.    8   |  Maximum Packet Size [M]  (32-bit integer)                    |
  584.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  585.  
  586.  
  587.      (a) - Message format version number (0)
  588.      (b) - Overall length (7 words not including header)
  589.      (c) - Service header, service number 1 (default/global information)
  590.      (d) - Length of service 1 data, 6 words not including header
  591.      (e) - Parameter ID, parameter 127 (Token_Bucket_TSpec)
  592.      (f) - Parameter 127 flags (none set)
  593.      (g) - Parameter 127 length, 5 words not including header
  594.  
  595.  
  596.    In this TSpec, the parameters [r] and [b] are set to reflect the
  597.    sender's view of its generated traffic. The peak rate parameter [p]
  598.    may be set to the sender's peak traffic generation rate (if known and
  599.    controlled), the physical interface line rate (if known), or positive
  600.    infinity (if no better value is available).  Positive infinity is
  601.    represented as an IEEE single-precision floating-point number with an
  602.    exponent of all ones (255) and a sign and mantissa of all zeros.  The
  603.    format of IEEE floating-point numbers is further summarized in [RFC
  604.    1832].
  605.  
  606.    The minimum policed unit parameter [m] should generally be set equal
  607.    to the size of the smallest packet generated by the application. This
  608.    packet size includes the application data and all protocol headers at
  609.    or above the IP level (IP, TCP, UDP, RTP, etc.). The size given does
  610.    not include any link-level headers, because these headers will change
  611.    as the packet crosses different portions of the internetwork.
  612.  
  613.  
  614.  
  615.  
  616.  
  617.  
  618. Wroclawski                  Standards Track                    [Page 11]
  619.  
  620. RFC 2210                   RSVP with INTSERV              September 1997
  621.  
  622.  
  623.    The [m] parameter is used by nodes within the network to compute the
  624.    maximum bandwidth overhead needed to carry a flow's packets over the
  625.    particular link-level technology, based on the ratio of [m] to the
  626.    link-level header size. This allows the correct amount of bandwidth
  627.    to be allocated to the flow at each point in the net.  Note that
  628.    smaller values of this parameter lead to increased overhead
  629.    estimates, and thus increased likelyhood of a reservation request
  630.    being rejected by the node. In some cases, an application
  631.    transmitting a low percentage of very small packets may therefore
  632.    choose to set the value of [m] larger than the actual minimum
  633.    transmitted packet size. This will increase the likelyhood of the
  634.    reservation succeeding, at the expense of policing packets of size
  635.    less than [m] as if they were of size [m].
  636.  
  637.    Note that the an [m] value of zero is illegal. A value of zero would
  638.    indicate that no data or IP headers are present, and would give an
  639.    infinite amount of link-level overhead.
  640.  
  641.    The maximum packet size parameter [M] should be set to the size of
  642.    the largest packet the application might wish to generate, as
  643.    described in Section 2.3.2. This value must, by definition, be equal
  644.    to or larger than the value of [m].
  645.  
  646. 3.2. RSVP FLOWSPEC Object
  647.  
  648.    The RSVP FLOWSPEC object carries information necessary to make
  649.    reservation requests from the receiver(s) into the network. This
  650.    includes an indication of which QoS control service is being
  651.    requested, and the parameters needed for that service.
  652.  
  653.    The QoS control service requested is indicated by the service_number
  654.    in the FLOWSPEC's per-service header.
  655.  
  656. 3.2.1 FLOWSPEC object when requesting Controlled-Load service
  657.  
  658.    The format of an RSVP FLOWSPEC object originating at a receiver
  659.    requesting Controlled-Load service is shown below. Each of the TSpec
  660.    fields is represented using the preferred concrete representation
  661.    specified in the 'Invocation Information' section of [RFC 2211]. The
  662.    value of 5 in the per-service header (field (c), below) indicates
  663.    that Controlled-Load service is being requested.
  664.  
  665.  
  666.  
  667.  
  668.  
  669.  
  670.  
  671.  
  672.  
  673.  
  674. Wroclawski                  Standards Track                    [Page 12]
  675.  
  676. RFC 2210                   RSVP with INTSERV              September 1997
  677.  
  678.  
  679.         31           24 23           16 15            8 7             0
  680.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  681.    1   | 0 (a) |    reserved           |             7 (b)             |
  682.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  683.    2   |    5  (c)     |0| reserved    |             6 (d)             |
  684.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  685.    3   |   127 (e)     |    0 (f)      |             5 (g)             |
  686.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  687.    4   |  Token Bucket Rate [r] (32-bit IEEE floating point number)    |
  688.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  689.    5   |  Token Bucket Size [b] (32-bit IEEE floating point number)    |
  690.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  691.    6   |  Peak Data Rate [p] (32-bit IEEE floating point number)       |
  692.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  693.    7   |  Minimum Policed Unit [m] (32-bit integer)                    |
  694.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  695.    8   |  Maximum Packet Size [M]  (32-bit integer)                    |
  696.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  697.  
  698.      (a) - Message format version number (0)
  699.      (b) - Overall length (7 words not including header)
  700.      (c) - Service header, service number 5 (Controlled-Load)
  701.      (d) - Length of controlled-load data, 6 words not including
  702.            per-service header
  703.      (e) - Parameter ID, parameter 127 (Token Bucket TSpec)
  704.      (f) - Parameter 127 flags (none set)
  705.      (g) - Parameter 127 length, 5 words not including per-service
  706.            header
  707.  
  708.  
  709.    In this object, the TSpec parameters [r], [b], and [p] are set to
  710.    reflect the traffic parameters of the receiver's desired reservation
  711.    (the Reservation TSpec). The meaning of these fields is discussed
  712.    fully in [RFC 2211]. Note that it is unlikely to make sense for the
  713.    [p] term to be smaller than the [r] term.
  714.  
  715.    The maximum packet size parameter [M] should be set to the value of
  716.    the smallest path MTU, which the receiver learns from information in
  717.    arriving RSVP ADSPEC objects.  Alternatively, if the receiving
  718.    application has built-in knowledge of the maximum packet size in use
  719.    within the RSVP session, and this value is smaller than the smallest
  720.    path MTU, [M] may be set to this value.  Note that requesting a value
  721.    of [M] larger than the service modules along the data path can
  722.    support will cause the reservation to fail. See section 2.3.2 for
  723.    further discussion of the MTU value.
  724.  
  725.  
  726.  
  727.  
  728.  
  729.  
  730. Wroclawski                  Standards Track                    [Page 13]
  731.  
  732. RFC 2210                   RSVP with INTSERV              September 1997
  733.  
  734.  
  735.    The value of [m] can be chosen in several ways. Recall that when a
  736.    resource reservation is installed at each intermediate node, the
  737.    value used for [m] is the smaller of the receiver's request and the
  738.    values in each sender's SENDER_TSPEC.
  739.  
  740.    If the application has a fixed, known minimum packet size, than that
  741.    value should be used for [m]. This is the most desirable case.
  742.  
  743.    For a shared reservation style, the receiver may choose between two
  744.    options, or pick some intermediate point between them.
  745.  
  746.       - if the receiver chooses a large value for [m], then the
  747.       reservation will allocate less overhead for link-level headers.
  748.       However, if a new sender with a smaller SENDER_TSPEC [m] joins the
  749.       session later, an already-installed reservation may fail at that
  750.       time.
  751.  
  752.       - if the receiver chooses a value of [m] equal to the smallest
  753.       value which might be used by any sender, then the reservation will
  754.       be forced to allocate more overhead for link-level headers.
  755.       However it will not fail later if a new sender with a smaller
  756.       SENDER_TSPEC [m] joins the session.
  757.  
  758.    For a FF reservation style, if no application-specific value is known
  759.    the receiver should simply use the value of [m] arriving in each
  760.    sender's SENDER_TSPEC for its reservation request to that sender.
  761.  
  762. 3.2.2. FLOWSPEC Object when Requesting Guaranteed Service
  763.  
  764.    The format of an RSVP FLOWSPEC object originating at a receiver
  765.    requesting Guaranteed service is shown below. The flowspec object
  766.    used to request guaranteed service carries a TSpec and RSpec
  767.    specifying the traffic parameters of the flow desired by the
  768.    receiver.
  769.  
  770.    Each of the TSpec and RSpec fields is represented using the preferred
  771.    concrete representation specified in the 'Invocation Information'
  772.    section of [RFC 2212]. The value of 2 for the service header
  773.    identifier (field (c) in the picture below) indicates that Guaranteed
  774.    service is being requested.
  775.  
  776.  
  777.  
  778.  
  779.  
  780.  
  781.  
  782.  
  783.  
  784.  
  785.  
  786. Wroclawski                  Standards Track                    [Page 14]
  787.  
  788. RFC 2210                   RSVP with INTSERV              September 1997
  789.  
  790.  
  791.         31           24 23           16 15            8 7             0
  792.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  793.    1   | 0 (a) |    Unused             |            10 (b)             |
  794.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  795.    2   |    2  (c)     |0| reserved    |             9 (d)             |
  796.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  797.    3   |   127 (e)     |    0 (f)      |             5 (g)             |
  798.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  799.    4   |  Token Bucket Rate [r] (32-bit IEEE floating point number)    |
  800.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  801.    5   |  Token Bucket Size [b] (32-bit IEEE floating point number)    |
  802.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  803.    6   |  Peak Data Rate [p] (32-bit IEEE floating point number)       |
  804.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  805.    7   |  Minimum Policed Unit [m] (32-bit integer)                    |
  806.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  807.    8   |  Maximum Packet Size [M]  (32-bit integer)                    |
  808.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  809.    9   |     130 (h)   |    0 (i)      |            2 (j)              |
  810.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  811.    10  |  Rate [R]  (32-bit IEEE floating point number)                |
  812.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  813.    11  |  Slack Term [S]  (32-bit integer)                             |
  814.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  815.  
  816.      (a) - Message format version number (0)
  817.      (b) - Overall length (9 words not including header)
  818.      (c) - Service header, service number 2 (Guaranteed)
  819.      (d) - Length of per-service data, 9 words not including per-service
  820.            header
  821.      (e) - Parameter ID, parameter 127 (Token Bucket TSpec)
  822.      (f) - Parameter 127 flags (none set)
  823.      (g) - Parameter 127 length, 5 words not including parameter header
  824.      (h) - Parameter ID, parameter 130 (Guaranteed Service RSpec)
  825.      (i) - Parameter 130 flags (none set)
  826.      (j) - Parameter 130 length, 2 words not including parameter header
  827.  
  828.  
  829.    In this object, the TSpec parameters [r], [b], and [p] are set to
  830.    reflect the traffic parameters of the receiver's desired reservation
  831.    (the Reservation TSpec). The meaning of these fields is discussed
  832.    fully in [RFC 2212]. Note that it is unlikely to make sense for the
  833.    [p] term to be smaller than the [r] term.
  834.  
  835.    The RSpec terms [R] and [S] are selected to obtain the desired
  836.    bandwidth and delay guarantees. This selection is described in [RFC
  837.    2212].
  838.  
  839.  
  840.  
  841.  
  842. Wroclawski                  Standards Track                    [Page 15]
  843.  
  844. RFC 2210                   RSVP with INTSERV              September 1997
  845.  
  846.  
  847.    The [m] and [M] parameters are set identically to those for the
  848.    Controlled-Load service FLOWSPEC, described in the previous section.
  849.  
  850. 3.3. RSVP ADSPEC Object
  851.  
  852.    An RSVP ADSPEC object is constructed from data fragments contributed
  853.    by each service which might be used by the application.  The ADSPEC
  854.    begins with an overall message header, followed by a fragment for the
  855.    default general parameters, followed by fragments for every QoS
  856.    control service which may be selected by application receivers. The
  857.    size of the ADSPEC varies depending on the number and size of per-
  858.    service data fragments present and the presence of non-default
  859.    general parameters (described in Section 3.3.5).
  860.  
  861.    The complete absence of a data fragment for a particular service
  862.    means that the application sender does not know or care about that
  863.    service, and is a signal to intermediate nodes not to add or update
  864.    information about that service to the ADSPEC. It is also a signal to
  865.    application receivers that they should not select that service when
  866.    making reservations.
  867.  
  868.    Each fragment present is identified by a per-service data header.
  869.    Each header contains a field identifying the service, a break bit,
  870.    and a length field.
  871.  
  872.    The length field allows the ADSPEC information for a service to be
  873.    skipped over by a network elements which does not recognize or
  874.    implement the service.  When an element does this, it sets the break
  875.    bit, indicating that the service's ADSPEC data was not updated at at
  876.    least one hop. Note that a service's break bit can be set without
  877.    otherwise supporting the service in any way.  In all cases, a network
  878.    element encountering a per-service data header it does not understand
  879.    simply sets bit 23 to report that the service is not supported, then
  880.    skips over the rest of the fragment.
  881.  
  882.    Data fragments must always appear in an ADSPEC in service_number
  883.    order. In particular, the default general parameters fragment
  884.    (service_number 1) always comes first.
  885.  
  886.    Within a data fragment, the service-specific data must alway come
  887.    first, followed by any non-default general parameters which may be
  888.    present, ordered by parameter_number. The size and structure of the
  889.    service-specific data is fixed by the service definition, and does
  890.    not require run-time parsing. The remainder of the fragment, which
  891.    carries non-default general parameters, varies in size and structure
  892.    depending on which, if any, of these parameters are present. This
  893.    part of the fragment must be parsed by examining the per-parameter
  894.    headers.
  895.  
  896.  
  897.  
  898. Wroclawski                  Standards Track                    [Page 16]
  899.  
  900. RFC 2210                   RSVP with INTSERV              September 1997
  901.  
  902.  
  903.    Since the overall size of each data fragment is variable, it is
  904.    always necessary to examine the length field to find the end of the
  905.    fragment, rather than assuming a fixed-size structure.
  906.  
  907.    3.3.1. RSVP ADSPEC format
  908.  
  909.    The basic ADSPEC format is shown below. The message header and the
  910.    default general parameters fragment are always present. The fragments
  911.    for Guaranteed or Controlled-Load service may be omitted if the
  912.    service is not to be used by the RSVP session. Additional data
  913.    fragments will be added if new services are defined.
  914.  
  915.        31           24 23            16 15            8 7             0
  916.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  917.        | 0 (a) |      reserved         |  Msg length - 1 (b)           |
  918.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  919.        |                                                               |
  920.        |    Default General Parameters fragment (Service 1)  (c)       |
  921.        |    (Always Present)                                           |
  922.        |                                                               |
  923.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  924.        |                                                               |
  925.        |    Guaranteed Service Fragment (Service 2)    (d)             |
  926.        |    (Present if application might use Guaranteed Service)      |
  927.        |                                                               |
  928.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  929.        |                                                               |
  930.        |    Controlled-Load Service Fragment (Service 5)  (e)          |
  931.        |    (Present if application might use Controlled-Load Service) |
  932.        |                                                               |
  933.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  934.  
  935.      (a) - Message format version number (0)
  936.      (b) - Overall message length not including header word
  937.      (c, d, e) - Data fragments
  938.  
  939. 3.3.2. Default General Characterization Parameters ADSPEC data fragment
  940.  
  941.    All RSVP ADSPECs carry the general characterization parameters
  942.    defined in [RFC 2215].  Values for global or default general
  943.    parameters (values which apply to the all services or the path
  944.    itself) are carried in the per-service data fragment for service
  945.    number 1, as shown in the picture above.  This fragment is always
  946.    present, and always first in the message.
  947.  
  948.  
  949.  
  950.  
  951.  
  952.  
  953.  
  954. Wroclawski                  Standards Track                    [Page 17]
  955.  
  956. RFC 2210                   RSVP with INTSERV              September 1997
  957.  
  958.  
  959.        31            24 23           16 15            8 7             0
  960.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  961.    1   |    1  (c)     |x| reserved    |           8 (d)               |
  962.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  963.    2   |    4 (e)      |    (f)        |           1 (g)               |
  964.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  965.    3   |        IS hop cnt (32-bit unsigned integer)                   |
  966.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  967.    4   |    6 (h)      |    (i)        |           1 (j)               |
  968.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  969.    5   |  Path b/w estimate  (32-bit IEEE floating point number)       |
  970.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  971.    6   |     8 (k)     |    (l)        |           1 (m)               |
  972.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  973.    7   |        Minimum path latency (32-bit integer)                  |
  974.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  975.    8   |     10 (n)    |      (o)      |           1 (p)               |
  976.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  977.    9   |      Composed MTU (32-bit unsigned integer)                   |
  978.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  979.  
  980.      (c) - Per-Service header, service number 1 (Default General
  981.            Parameters)
  982.      (d) - Global Break bit ([RFC 2215], Parameter 2) (marked x) and
  983.            length of General Parameters data block.
  984.      (e) - Parameter ID, parameter 4 (Number-of-IS-hops param from
  985.            [RFC 2215])
  986.      (f) - Parameter 4 flag byte
  987.      (g) - Parameter 4 length, 1 word not including header
  988.      (h) - Parameter ID, parameter 6 (Path-BW param from [RFC 2215])
  989.      (i) - Parameter 6 flag byte
  990.      (j) - Parameter 6 length, 1 word not including header
  991.      (k) - Parameter ID, parameter 8 (minimum path latency from [RFC
  992.            2215])
  993.      (l) - Parameter 8 flag byte
  994.      (m) - Parameter 8 length, 1 word not including header
  995.      (n) - Parameter ID, parameter 10 (composed path MTU from [RFC 2215])
  996.      (o) - Parameter 10 flag byte
  997.      (p) - Parameter 10 length, 1 word not including header
  998.  
  999.  
  1000.    Rules for composing general parameters appear in [RFC 2215].
  1001.  
  1002.    In the above fragment, the global break bit (bit 23 of word 1, marked
  1003.    with (x) in the picture) is used to indicate the existence of a
  1004.    network element not supporting QoS control services somewhere in the
  1005.    data path.  This bit is cleared when the ADSPEC is created, and set
  1006.    to one if a network element which does not support RSVP or integrated
  1007.  
  1008.  
  1009.  
  1010. Wroclawski                  Standards Track                    [Page 18]
  1011.  
  1012. RFC 2210                   RSVP with INTSERV              September 1997
  1013.  
  1014.  
  1015.    services is encountered.  An ADSPEC arriving at a receiver with this
  1016.    bit set indicates that all other parameters in the ADSPEC may be
  1017.    invalid, since not all network elements along the path support
  1018.    updating of the ADSPEC.
  1019.  
  1020.    The general parameters are updated at every network node which
  1021.    supports RSVP:
  1022.  
  1023.       - When a PATH message ADSPEC encounters a network element
  1024.       implementing integrated services, the portion of the ADSPEC
  1025.       associated with service number 1 is passed to the module
  1026.       implementing general parameters. This module updates the global
  1027.       general parameters.
  1028.  
  1029.       - When a PATH message ADSPEC encounters a network element that
  1030.       does *not* support RSVP or implement integrated services, the
  1031.       break bit in the general parameters service header must be set. In
  1032.       practice, this bit will usually be set by another network element
  1033.       which supports RSVP, but has been made aware of the gap in
  1034.       integrated services coverage.
  1035.  
  1036.       - In either case, the ADSPEC is passed back to RSVP for delivery
  1037.       to the next hop along the path.
  1038.  
  1039. 3.3.3. Guaranteed Service ADSPEC data fragment
  1040.  
  1041.    The Guaranteed service uses the RSVP ADSPEC to carry data needed to
  1042.    compute the C and D terms passed from the network to the application.
  1043.    The minimum size of a non-empty guaranteed service data fragment is 8
  1044.    32-bit words.  The ADSPEC fragment for Guaranteed service has the
  1045.    following format:
  1046.  
  1047.  
  1048.  
  1049.  
  1050.  
  1051.  
  1052.  
  1053.  
  1054.  
  1055.  
  1056.  
  1057.  
  1058.  
  1059.  
  1060.  
  1061.  
  1062.  
  1063.  
  1064.  
  1065.  
  1066. Wroclawski                  Standards Track                    [Page 19]
  1067.  
  1068. RFC 2210                   RSVP with INTSERV              September 1997
  1069.  
  1070.  
  1071.        31            24 23           16 15            8 7             0
  1072.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1073.    1   |     2 (a)     |x|  reserved   |             N-1 (b)           |
  1074.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1075.    2   |    133 (c)    |     0 (d)     |             1 (e)             |
  1076.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1077.    3   |   End-to-end composed value for C [Ctot] (32-bit integer)     |
  1078.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1079.    4   |     134 (f)   |       (g)     |             1 (h)             |
  1080.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1081.    5   |   End-to-end composed value for D [Dtot] (32-bit integer)     |
  1082.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1083.    6   |     135 (i)   |       (j)     |             1 (k)             |
  1084.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1085.    7   | Since-last-reshaping point composed C [Csum] (32-bit integer) |
  1086.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1087.    8   |     136 (l)   |       (m)     |             1 (n)             |
  1088.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1089.    9   | Since-last-reshaping point composed D [Dsum] (32-bit integer) |
  1090.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1091.    10  | Service-specific general parameter headers/values, if present |
  1092.     .  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1093.     .
  1094.    N   |                                                               |
  1095.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1096.  
  1097.      (a) - Per-Service header, service number 2 (Guaranteed)
  1098.      (b) - Break bit and Length of per-service data in 32-bit
  1099.            words not including header word.
  1100.      (c) - Parameter ID, parameter 133 (Composed Ctot)
  1101.      (d) - Parameter 133 flag byte
  1102.      (e) - Parameter 133 length, 1 word not including header
  1103.      (f) - Parameter ID, parameter 134 (Composed Dtot)
  1104.      (g) - Parameter 134 flag byte
  1105.      (h) - Parameter 134 length, 1 word not including header
  1106.      (i) - Parameter ID, parameter 135 (Composed Csum).
  1107.      (j) - Parameter 135 flag byte
  1108.      (k) - Parameter 135 length, 1 word not including header
  1109.      (l) - Parameter ID, parameter 136 (Composed Dsum).
  1110.      (m) - Parameter 136 flag byte
  1111.      (n) - Parameter 136 length, 1 word not including header
  1112.  
  1113.    When a node which actually implements guaranteed service creates the
  1114.    guaranteed service adspec fragment, the parameter values are set to
  1115.    the local values for each parameter. When an application or network
  1116.  
  1117.  
  1118.  
  1119.  
  1120.  
  1121.  
  1122. Wroclawski                  Standards Track                    [Page 20]
  1123.  
  1124. RFC 2210                   RSVP with INTSERV              September 1997
  1125.  
  1126.  
  1127.    element which does not itself implement guaranteed service creates a
  1128.    guaranteed service adspec fragment, it should set the values of each
  1129.    parameter to zero, and set the break bit to indicate that the service
  1130.    is not actually implemented at the node.
  1131.  
  1132.    An application or host RSVP which is creating a guaranteed service
  1133.    adspec fragment but does not itself implement the guaranteed service
  1134.    may create a truncated "empty" guaranteed adspec fragment consisting
  1135.    of only a header word:
  1136.  
  1137.  
  1138.        31            24 23           16 15            8 7             0
  1139.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1140.    1   |     2 (a)     |1|    (b)      |         0 (c)                 |
  1141.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1142.  
  1143.      (a) - Per-Service header, service number 2 (Guaranteed)
  1144.      (b) - Break bit (set, service not implemented)
  1145.      (c) - Length of per-service data in 32-bit words not
  1146.            including header word.
  1147.  
  1148.  
  1149.    This might occur if the sending application or host does not do
  1150.    resource reservation iself, but still wants the network to do so.
  1151.    Note that in this case the break bit will always be set, since the
  1152.    creator of the adspec fragment does not itself implement guaranteed
  1153.    service.
  1154.  
  1155.    When a PATH message ADSPEC containing a per-service header for
  1156.    Guaranteed service encounters a network element implementing
  1157.    Guaranteed service, the guaranteed service data fragment is updated:
  1158.  
  1159.       - If the data block in the ADSPEC is an empty (header-only) block
  1160.       the header-only fragment must first be expanded into the complete
  1161.       data fragment described above, with initial values of Ctot, Dtot,
  1162.       Csum, and Dsum set to zero. An empty fragment can be recognized
  1163.       quickly by checking for a size field of zero.  The value of the
  1164.       break bit in the header is preserved when the additional
  1165.       Guaranteed service data is added. The overall message length and
  1166.       the guaranteed-service data fragment size (field (b) in the
  1167.       pictures above) are changed to reflect the increased message
  1168.       length.
  1169.  
  1170.       The values of Ctot, Csum, Dtot, and Dsum in the ADSPEC data
  1171.       fragment are then composed with the local values exported by the
  1172.       network element according to the composition functions defined in
  1173.       [RFC 2212].
  1174.  
  1175.  
  1176.  
  1177.  
  1178. Wroclawski                  Standards Track                    [Page 21]
  1179.  
  1180. RFC 2210                   RSVP with INTSERV              September 1997
  1181.  
  1182.  
  1183.       - When a PATH message ADSPEC with a Guaranteed service header
  1184.       encounters a network element that supports RSVP but does *not*
  1185.       implement Guaranteed service, the network element sets the break
  1186.       bit in the Guaranteed service header.
  1187.  
  1188.       - The new values are placed in the correct fields of the ADSPEC,
  1189.       and the ADSPEC is passed back to RSVP for delivery to the next hop
  1190.       along the path.
  1191.  
  1192.    When a PATH message ADSPEC containing a Guaranteed service data
  1193.    fragment encounters a network element that supports RSVP but does
  1194.    *not* implement Guaranteed service, the network element sets the
  1195.    break bit in the Guaranteed service header.
  1196.  
  1197.    When a PATH message ADSPEC *without* a Guaranteed service header
  1198.    encounters a network element implementing Guaranteed service, the
  1199.    Guaranteed service module of the network element leaves the ADSPEC
  1200.    unchanged. The absence of a Guaranteed service per-service header in
  1201.    the ADSPEC indicates that the application does not care about
  1202.    Guaranteed service.
  1203.  
  1204.  
  1205. 3.3.4. Controlled-Load Service ADSPEC data fragment
  1206.  
  1207.    Unlike the Guaranteed service, the Controlled-Load service does not
  1208.    require extra ADSPEC data to function correctly. The only ADSPEC data
  1209.    specific to the Controlled-Load service is the Controlled-Load break
  1210.    bit.  Therefore the usual Controlled-Load service data block contains
  1211.    no extra information. The minimum size of the controlled-load service
  1212.    data fragment is 1 32-bit word.
  1213.  
  1214.  
  1215.  
  1216.        31            24 23           16 15            8 7             0
  1217.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1218.    1   |     5 (a)     |x|  (b)        |            N-1 (c)            |
  1219.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1220.    2   | Service-specific general parameter headers/values, if present |
  1221.     .  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1222.     .
  1223.    N   |                                                               |
  1224.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1225.      (a) - Per-Service header, service number 5 (Controlled-Load)
  1226.      (b) - Break bit
  1227.      (c) - Length of per-service data in 32 bit words not including
  1228.            header word.
  1229.  
  1230.  
  1231.  
  1232.  
  1233.  
  1234. Wroclawski                  Standards Track                    [Page 22]
  1235.  
  1236. RFC 2210                   RSVP with INTSERV              September 1997
  1237.  
  1238.  
  1239.    The Controlled-Load portion of the ADSPEC is processed according to
  1240.    the following rules:
  1241.  
  1242.       - When a PATH message ADSPEC with a Controlled-Load service header
  1243.       encounters a network element implementing Controlled-Load service,
  1244.       the network element makes no changes to the service header.
  1245.  
  1246.       - When a PATH message ADSPEC with a Controlled-Load service header
  1247.       encounters a network element that supports RSVP but does *not*
  1248.       implement Controlled-Load service, the network element sets the
  1249.       break bit in the Controlled-Load service header.
  1250.  
  1251.       - In either case, the ADSPEC is passed back to RSVP for delivery
  1252.       to the next hop along the path.
  1253.  
  1254. 3.3.5. Overriding Global ADSPEC Data with Service-Specific Information
  1255.  
  1256.    In some cases, the default values for the general parameters are not
  1257.    correct for a particular service. For example, an implementation of
  1258.    Guaranteed service may accept only packets with a smaller maximum
  1259.    size than the link MTU, or the percentage of outgoing link bandwidth
  1260.    made available to the Controlled-Load service at a network element
  1261.    may be administratively limited to less than the overall bandwidth.
  1262.  
  1263.    In these cases, a service-specific value, as well as the default
  1264.    value, is reported to the receiver receiving the ADSPEC.  Service-
  1265.    specific information which overrides general information is carried
  1266.    by a parameter with the same name as the general parameter, placed
  1267.    within the data fragment of the QoS control service to which it
  1268.    applies. These service-specific values are referred to as override or
  1269.    service-specific general parameters.
  1270.  
  1271.    For example, the following Controlled-Load ADSPEC fragment carries
  1272.    information overriding the global path bandwidth estimate with a
  1273.    different value:
  1274.  
  1275.  
  1276.  
  1277.  
  1278.  
  1279.  
  1280.  
  1281.  
  1282.  
  1283.  
  1284.  
  1285.  
  1286.  
  1287.  
  1288.  
  1289.  
  1290. Wroclawski                  Standards Track                    [Page 23]
  1291.  
  1292. RFC 2210                   RSVP with INTSERV              September 1997
  1293.  
  1294.  
  1295.        31           24 23           16 15            8 7             0
  1296.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1297.    1   |     5 (a)     |x| (b)         |             2 (c)             |
  1298.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1299.    2   |     6 (d)     |      0 (d)    |             1 (e)             |
  1300.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1301.    3   |  Path b/w estimate for C-L service (32b IEEE FP number)       |
  1302.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1303.  
  1304.      (a) - Per-Service header, service number 5 (Controlled-Load)
  1305.      (b) - Break bit
  1306.      (c) - Length of per-service data, two words not including header
  1307.      (c) - Parameter ID, parameter 6
  1308.            (AVAILABLE_PATH_BANDWIDTH general parameter from [RFC 2215])
  1309.      (d) - Parameter 6 flags (none set)
  1310.      (e) - Parameter 6 length, one word not including header
  1311.  
  1312.  
  1313.    The presence of override parameters in a data fragment can be quickly
  1314.    detected by examining the fragment's length field, which will be
  1315.    larger than the "standard" length for the fragment.  Specific
  1316.    override parameters can be easily identified by examining the
  1317.    parameter headers, because they have parameter_number's from the
  1318.    general parameter portion of the number space (1-127), but are found
  1319.    in service-specific data blocks (those with service_numbers between 2
  1320.    and 254 in the per_service header field).
  1321.  
  1322.    The presence of override parameters in a data fragment is optional. A
  1323.    parameter header/value pair is added only when a particular
  1324.    application or QoS control service wishes to override the global
  1325.    value of a general parameter with a service-specific value.
  1326.  
  1327.    As with IP options, it is only the use of these override parameters
  1328.    that is optional. All implementations must be prepared to receive and
  1329.    process override parameters.
  1330.  
  1331.    The basic principle for handling override parameters is to use the
  1332.    override value (local or adspec) if it exists, and to use the default
  1333.    value otherwise. If a local node exports an override value for a
  1334.    general parameter, but there is no override value in the arriving
  1335.    adspec, the local node adds it. The following pseudo-code fragment
  1336.    gives more detail:
  1337.  
  1338.  
  1339.  
  1340.  
  1341.  
  1342.  
  1343.  
  1344.  
  1345.  
  1346. Wroclawski                  Standards Track                    [Page 24]
  1347.  
  1348. RFC 2210                   RSVP with INTSERV              September 1997
  1349.  
  1350.  
  1351.    /* Adspec parameter processing rules *
  1352.  
  1353.    <get arriving ADSPEC from RSVP>
  1354.  
  1355.    for ( <each service number N with a fragment in the ADSPEC> ) {
  1356.      if ( <the local node does not support the service> ) {
  1357.        <set the break bit in the service header>
  1358.      } else {
  1359.        for ( <each parameter in the data fragment for service N> ) {
  1360.          if ( < the local service N supplies a value for the parameter> ) {
  1361.             <compose the arriving and values and update the adspec>
  1362.          } else {
  1363.             /* Must be a general parameter, or service N would have
  1364.              * supplied a value..
  1365.              */
  1366.             <compose the arriving value with the local default value
  1367.              and update the adspec>
  1368.          }
  1369.        }
  1370.        for ( <any parameters supplied by the local service N
  1371.              implementation but not found in the adspec> ) {
  1372.             /*
  1373.              * Must be an override value for a general parameter,
  1374.              * or the adspec would have contained a value..
  1375.              */
  1376.             <compose the local override value with the arriving default
  1377.              value (from the service 1 data fragment) and add the parameter
  1378.              to the adspec's service N fragment in parameter_number order>
  1379.        }
  1380.      }
  1381.    }
  1382.  
  1383.    <pass updated ADSPEC back to RSVP>
  1384.  
  1385.    In practice, the two 'for' loops can be combined. Since override
  1386.    parameters within a service's fragment are transmitted in numerical
  1387.    order, it is possible to determine whether a parameter is present
  1388.    without scanning the entire fragment. Also, because the data
  1389.    fragments are ordered by service_number, the default values for
  1390.    general parameters will always be read before they might be needed to
  1391.    update local override values in the second for loop.
  1392.  
  1393. 3.3.6. Example
  1394.  
  1395.    The picture below shows the complete adspec for an application which
  1396.    can use either controlled-load or guaranteed service. In the example,
  1397.  
  1398.  
  1399.  
  1400.  
  1401.  
  1402. Wroclawski                  Standards Track                    [Page 25]
  1403.  
  1404. RFC 2210                   RSVP with INTSERV              September 1997
  1405.  
  1406.  
  1407.    data fragments are present for general parameters, guaranteed, and
  1408.    controlled-load services. All fragments are of standard size, and
  1409.    there are no override parameters present.
  1410.  
  1411.  
  1412.        31            24 23           16 15            8 7             0
  1413.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1414.    1   | 0 (a) |    Unused             |          19 (b)               |
  1415.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1416.    2   |    1  (c)     |x| reserved (d)|           8 (e)               |
  1417.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1418.    3   |    4 (f)      |    (g)        |           1 (h)               |
  1419.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1420.    4   |  zero extension of ..           IS hop cnt (16-bit unsigned)  |
  1421.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1422.    5   |    6 (i)      |    (j)        |           1 (k)               |
  1423.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1424.    6   |  Path b/w estimate  (32-bit IEEE floating point number)       |
  1425.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1426.    7   |     8 (l)     |    (m)        |           1 (n)               |
  1427.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1428.    8   |        Minimum path latency (32-bit integer)                  |
  1429.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1430.    9   |     10 (o)    |      (p)      |           1 (q)               |
  1431.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1432.    10  |  zero extension of ..        composed MTU (16-bit unsigned)   |
  1433.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1434.    11  |     2 (r)     |x| reserved (s)|             8 (t)             |
  1435.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1436.    12  |    133 (u)    |       (v)     |             1 (w)             |
  1437.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1438.    13  |   End-to-end composed value for C [Ctot] (32-bit integer)     |
  1439.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1440.    14  |     134 (x)   |       (y)     |             1 (z)             |
  1441.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1442.    15  |   End-to-end composed value for D [Dtot] (32-bit integer)     |
  1443.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1444.    16  |     135 (aa   |       (bb     |             1 (cc)            |
  1445.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1446.    17  | Since-last-reshaping point composed C [Csum] (32-bit integer) |
  1447.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1448.    18  |     136 (dd)  |       (ee)    |             1 (ff)            |
  1449.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1450.    19  | Since-last-reshaping point composed D [Dsum] (32-bit integer) |
  1451.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1452.    20  |     5 (gg     |x   0  (hh)    |             0 (ii)            |
  1453.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1454.  
  1455.  
  1456.  
  1457.  
  1458. Wroclawski                  Standards Track                    [Page 26]
  1459.  
  1460. RFC 2210                   RSVP with INTSERV              September 1997
  1461.  
  1462.  
  1463.      Word 1: Message Header:
  1464.      (a) - Message header and version number
  1465.      (b) - Message length - 19 words not including header
  1466.  
  1467.      Words 2-7: Default general characterization parameters
  1468.      (c) - Per-Service header, service number 1
  1469.            (Default General Parameters)
  1470.      (d) - Global Break bit (NON_IS_HOP general parameter 2) (marked x)
  1471.      (e) - Length of General Parameters data block (8 words)
  1472.      (f) - Parameter ID, parameter 4 (NUMBER_OF_IS_HOPS
  1473.            general parameter)
  1474.      (g) - Parameter 4 flag byte
  1475.      (h) - Parameter 4 length, 1 word not including header
  1476.      (i) - Parameter ID, parameter 6 (AVAILABLE_PATH_BANDWIDTH
  1477.            general parameter)
  1478.      (j) - Parameter 6 flag byte
  1479.      (k) - Parameter 6 length, 1 word not including header
  1480.      (l) - Parameter ID, parameter 8 (MINIMUM_PATH_LATENCY
  1481.            general parameter)
  1482.      (m) - Parameter 8 flag byte
  1483.      (n) - Parameter 8 length, 1 word not including header
  1484.      (o) - Parameter ID, parameter 10 (PATH_MTU general parameter)
  1485.      (p) - Parameter 10 flag byte
  1486.      (q) - Parameter 10 length, 1 word not including header
  1487.  
  1488.      Words 11-19: Guaranteed service parameters
  1489.      (r) - Per-Service header, service number 2 (Guaranteed)
  1490.      (s) - Break bit
  1491.      (t) - Length of per-service data, 8 words not including header
  1492.      (u) - Parameter ID, parameter 133 (Composed Ctot)
  1493.      (v) - Composed Ctot flag byte
  1494.      (w) - Composed Ctot length, 1 word not including header
  1495.      (x) - Parameter ID, parameter 134 (Composed Dtot)
  1496.      (y) - Composed Dtot flag byte
  1497.      (z) - Composed Dtot length, 1 word not including header
  1498.      (aa)- Parameter ID, parameter 135 (Composed Csum).
  1499.      (bb)- Composed Csum flag byte
  1500.      (cc)- Composed Csum length, 1 word not including header
  1501.      (dd)- Parameter ID, parameter 136 (Composed Dsum).
  1502.      (ee)- Composed Dsum flag byte
  1503.      (ff)- Composed Dsum length, 1 word not including header
  1504.  
  1505.      Word 20: Controlled-Load parameters
  1506.      (gg - Per-Service header, service number 5 (Controlled-Load)
  1507.      (hh)- Break bit
  1508.      (ii)- Length of controlled-load data, 0 words not including header
  1509.  
  1510.  
  1511.  
  1512.  
  1513.  
  1514. Wroclawski                  Standards Track                    [Page 27]
  1515.  
  1516. RFC 2210                   RSVP with INTSERV              September 1997
  1517.  
  1518.  
  1519. 4. Security Considerations
  1520.  
  1521.    The message formatting and usage rules described in this note raise
  1522.    no security issues. The overall use of these rules to implement
  1523.    multiple qualities of service using RSVP and integrated services
  1524.    scheduling modules introduces a new security requirement; the need to
  1525.    control and authenticate access to enhanced qualities of service.
  1526.    This requirement is discussed further in [RFC 2205], [RFC 2212], and
  1527.    [RFC 2211]. [RFCRSVPMD5] describes the mechanism used to protect the
  1528.    integrity of RSVP messages carrying the information described here.
  1529.  
  1530.  
  1531.  
  1532.  
  1533.  
  1534.  
  1535.  
  1536.  
  1537.  
  1538.  
  1539.  
  1540.  
  1541.  
  1542.  
  1543.  
  1544.  
  1545.  
  1546.  
  1547.  
  1548.  
  1549.  
  1550.  
  1551.  
  1552.  
  1553.  
  1554.  
  1555.  
  1556.  
  1557.  
  1558.  
  1559.  
  1560.  
  1561.  
  1562.  
  1563.  
  1564.  
  1565.  
  1566.  
  1567.  
  1568.  
  1569.  
  1570. Wroclawski                  Standards Track                    [Page 28]
  1571.  
  1572. RFC 2210                   RSVP with INTSERV              September 1997
  1573.  
  1574.  
  1575. Appendix 1: Message construction rules
  1576.  
  1577.    This section gives the rule used to generate the object formats of
  1578.    Section 3. It is a general wire format for encoding integrated
  1579.    services data objects within setup and management protocol messages.
  1580.    The format has a three-level structure:
  1581.  
  1582.       - An overall message header carries a version number and message
  1583.       length.  Providing this header in a standard format allows the
  1584.       same code library to handle data objects carried by multiple setup
  1585.       protocols.
  1586.  
  1587.       - Per-service fragments carry information about a specific QoS
  1588.       control service, such as guaranteed [RFC 2212] or controlled load
  1589.       [RFC 2211]. Each per-service fragment carries one or more
  1590.       parameters.  The set of parameters present in a fragment is
  1591.       determined by the needs of the protocol in use. Examples are given
  1592.       in Section 2.
  1593.  
  1594.       - Parameters are the actual data used to control or monitor a
  1595.       service. A parameter may be a single quantity such as an integer,
  1596.       or a composite data structure such as a TSpec. The parameters
  1597.       specific to a service are defined by the service specification.
  1598.       The available general parameters, with definitions shared by many
  1599.       services, are defined by [RFC 2215].
  1600.  
  1601.  
  1602.  
  1603.  
  1604.  
  1605.  
  1606.  
  1607.  
  1608.  
  1609.  
  1610.  
  1611.  
  1612.  
  1613.  
  1614.  
  1615.  
  1616.  
  1617.  
  1618.  
  1619.  
  1620.  
  1621.  
  1622.  
  1623.  
  1624.  
  1625.  
  1626. Wroclawski                  Standards Track                    [Page 29]
  1627.  
  1628. RFC 2210                   RSVP with INTSERV              September 1997
  1629.  
  1630.  
  1631. A1.1. Message Header
  1632.  
  1633.    The 32-bit message header specifies the message format version number
  1634.    and total length of the message. The overall message must be aligned
  1635.    to a 32-bit boundary within the transport protocol's data packet.
  1636.    The message length is measured in 32-bit words *not including the
  1637.    word containing the header*. This is to lower the probability of an
  1638.    accidentally cleared word resulting in an infinite loop in the
  1639.    message parser.
  1640.  
  1641.    The Message Header is represented by a 32-bit bitfield laid out as
  1642.    shown below and then encoded as an XDR unsigned integer. Encoding as
  1643.    an XDR unsigned integer is equivalent to converting the bitfield from
  1644.    the machine's native format to big-endian network byte order.
  1645.  
  1646.    Message Header
  1647.  
  1648.        MSB                                                           LSB
  1649.        31    28 27                   16 15                            0
  1650.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1651.        |   V   |    Unused             |     OVERALL LENGTH            |
  1652.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1653.  
  1654.    V               - Message format version; currently 0
  1655.    OVERALL LENGTH  - Message length in 32-bit words not including header
  1656.  
  1657.  
  1658.  
  1659.  
  1660.  
  1661.  
  1662.  
  1663.  
  1664.  
  1665.  
  1666.  
  1667.  
  1668.  
  1669.  
  1670.  
  1671.  
  1672.  
  1673.  
  1674.  
  1675.  
  1676.  
  1677.  
  1678.  
  1679.  
  1680.  
  1681.  
  1682. Wroclawski                  Standards Track                    [Page 30]
  1683.  
  1684. RFC 2210                   RSVP with INTSERV              September 1997
  1685.  
  1686.  
  1687. A1.2. Per-Service Data Header
  1688.  
  1689.    The message header is followed by one or more service-specific data
  1690.    blocks, each containing the data associated with a specific QoS
  1691.    control service. Each service-specific data block begins with an
  1692.    identifying header. This 32-bit header contains the service number, a
  1693.    one-bit flag (the "break bit", because it indicates a break in the
  1694.    QoS control path) and a length field. The length field specifies the
  1695.    number of 32-bit words used to hold data specific to this service as
  1696.    a count of 32-bit words *not including the word containing the
  1697.    header*.
  1698.  
  1699.    The break bit, if set, indicates that the service specified by the
  1700.    header was unsupported or unrecognized at some point in the message's
  1701.    path through the network. This bit corresponds to the general
  1702.    parameter NON_IS_HOP defined in [RFC 2215]. It is cleared when a
  1703.    message is first generated, and set whenever the message passes
  1704.    through an element that does not recognize the service_number in the
  1705.    per-service header.
  1706.  
  1707.    The Per-Service Data Header is represented by a 32-bit bitfield laid
  1708.    out as shown below and then encoded as an XDR unsigned integer.
  1709.  
  1710.    Per-Service Data Header
  1711.  
  1712.        MSB                                                           LSB
  1713.        31            24 23           16 15                            0
  1714.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1715.        |  SVC_NUMBER   |B| Reserved    |            SVC_LENGTH         |
  1716.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1717.  
  1718.  
  1719.    SVC_NUMBER      - Service ID number (defined in service specification).
  1720.    B               - Break bit - service unsupported/break in path.
  1721.    SVC_LENGTH      - Service-specific data length in 32-bit words,
  1722.                      not including header.
  1723.  
  1724.  
  1725.  
  1726.  
  1727.  
  1728.  
  1729.  
  1730.  
  1731.  
  1732.  
  1733.  
  1734.  
  1735.  
  1736.  
  1737.  
  1738. Wroclawski                  Standards Track                    [Page 31]
  1739.  
  1740. RFC 2210                   RSVP with INTSERV              September 1997
  1741.  
  1742.  
  1743. A1.3. Parameter Header
  1744.  
  1745.    The per-service header is followed by one or more service parameter
  1746.    blocks, each identified by a Parameter Header. This header contains
  1747.    the parameter identifier (parameter number), the length of the data
  1748.    carrying the parameter's value, and a flag field. The data field(s)
  1749.    of the parameter follow.  The parameter number, as well as the
  1750.    meaning and format of the data words following the header, are given
  1751.    by the specification which defines the parameter.
  1752.  
  1753.    The Parameter Header is represented by a 32-bit bitfield laid out as
  1754.    shown below and then encoded as an XDR unsigned integer.
  1755.  
  1756.  
  1757.    Parameter Header
  1758.  
  1759.        MSB                                                           LSB
  1760.        31            24 23           16 15                            0
  1761.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1762.        |  PARAM_NUM    |I   FLAGS      |         PARAM_LENGTH          |
  1763.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1764.  
  1765.    PARAM_NUM       - Parameter number (defined in service specification)
  1766.    FLAGS           - Per-parameter flags
  1767.    PARAM_LENGTH    - Length of per-parameter data in 32-bit words, not
  1768.                      including the header word.
  1769.  
  1770.    The following flags are currently defined in the FLAGS field:
  1771.  
  1772.    I (bit 23)      - INVALID
  1773.  
  1774.                      This flag indicates that the parameter value was
  1775.                      not correctly processed at one or more network
  1776.                      elements along a data path.  It is intended for use
  1777.                      in a possible future service composition scheme.
  1778.  
  1779.    Other bits in the FLAGS field of the parameter header are currently
  1780.    reserved, and should be set to zero.
  1781.  
  1782.  
  1783.  
  1784.  
  1785.  
  1786.  
  1787.  
  1788.  
  1789.  
  1790.  
  1791.  
  1792.  
  1793.  
  1794. Wroclawski                  Standards Track                    [Page 32]
  1795.  
  1796. RFC 2210                   RSVP with INTSERV              September 1997
  1797.  
  1798.  
  1799. A1.4. Parameter Data
  1800.  
  1801.    Following the Parameter Header is the actual data representing the
  1802.    parameter value. Parameter values are encoded into one or more 32-bit
  1803.    words using the XDR external data representation described in [RFC
  1804.    1832], and the resulting words are placed in the message.
  1805.  
  1806.    The document defining a parameter should provide an XDR description
  1807.    of the parameter's data fields. If it does not, a description should
  1808.    be provided in this note.
  1809.  
  1810. References
  1811.  
  1812.    [RFC 2205] Braden, B., Ed., et. al., "Resource Reservation Protocol
  1813.    (RSVP) - Version 1 Functional Specification", RFC 2205, September
  1814.    1997.
  1815.  
  1816.    [RFC 2216] Shenker, S., and J. Wroclawski. "Network Element QoS
  1817.    Control Service Specification Template", RFC 2216, September 1997.
  1818.  
  1819.    [RFC 2212] Shenker, S., Partridge, C., and R Guerin, "Specification
  1820.    of Guaranteed Quality of Service", RFC 2212, September 1997.
  1821.  
  1822.    [RFC 2211] Wroclawski, J., "Specification of the Controlled Load
  1823.    Quality of Service", RFC 2211, September 1997.
  1824.  
  1825.    [RFC 2215] Shenker, S., and J. Wroclawski, "General Characterization
  1826.    Parameters for Integrated Service Network Elements", RFC 2215,
  1827.    September 1997.
  1828.  
  1829.    [RFCRSVPMD5] Baker, F., "RSVP Cryptographic Authentication", Work in
  1830.    Progress.
  1831.  
  1832.    [RFC 1832] Srinivansan, R., "XDR: External Data Representation
  1833.    Standard", RFC 1832, August 1995.
  1834.  
  1835. Author's Address
  1836.  
  1837.    John Wroclawski
  1838.    MIT Laboratory for Computer Science
  1839.    545 Technology Sq.
  1840.    Cambridge, MA  02139
  1841.  
  1842.    Phone: 617-253-7885
  1843.    Fax:   617-253-2673 (FAX)
  1844.    EMail: jtw@lcs.mit.edu
  1845.  
  1846.  
  1847.  
  1848.  
  1849.  
  1850. Wroclawski                  Standards Track                    [Page 33]
  1851.  
  1852.